﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace QL_Nha_Sach_Phuong_Nam
{
    public partial class FormPhieuDat : Form
    {

        string action="";//lệnh hành động

        List<Sach> dsSachchon;//khai bao danh sách dc chọn

        CXulyPhieuDat xulyPhieuDat;
        CXulyNhacungcap Xulyncc;
        CXulythongtinsach Xulysach;

        public FormPhieuDat()
        {
            InitializeComponent();
        }

        private void btnThemPhieuDat_Click(object sender, EventArgs e)
        {
            #region xử lý giao diện
            gbchonncc.Visible = true;// cho hien groupbox nha cung cap len
            btnThemPhieuDat.Enabled = false;
            btnEditPhieuDat.Enabled = false;//tat nut edit
            btnXoaPhieuDat.Enabled = false;
            btnSavePhieuDat.Enabled = true;//bat nut save len
            btnHuy.Enabled = true;

            txtmaPhieuDat.Text = "**NEW**";
            txthinhthucthanhtoan.Text = "";
            cbbchonnhacungcap.Text = "";
            dgvPhieuDat.Rows.Clear();
            #endregion

            #region xử lý dữ liệu
            action = "add";
            #endregion

        }

        private void btnSavePhieuDat_Click(object sender, EventArgs e)
        {
            #region xử lý giao diện
            gbchonncc.Visible = false;//an groupbox nha cung cap 
            btnXoaPhieuDat.Enabled = false;//tat nut xoa
            btnSavePhieuDat.Enabled = false;//tat nut save
            btnEditPhieuDat.Enabled = true;//bat nut edit
            btnThemPhieuDat.Enabled = true;//bat nut them
            btnHuy.Enabled = false;
            #endregion

            #region xử lý dữ liệu
            //Them
            if (action == "add")
            {
                PhieuDat pd = new PhieuDat();
                pd.PhieuDatID = xulyPhieuDat.getDsPhieuDat().Count+1;
                pd.PhieuDatNo = txtmaPhieuDat.Text;
                pd.PhieuDatDate = dtpNgayDat.Value.Date;
                pd.PhieuDatDeliveTime = dtpNgayNhan.Value;
                pd.PhieuDatPayment = txthinhthucthanhtoan.Text;
                pd.PhieuDatStatus = "live";
                pd.PhieuDatHandle = "no";
                pd.PhieuDatComplete = "no";
                pd.FK_NhaCungCapID = int.Parse(cbbchonnhacungcap.SelectedValue.ToString());
                foreach(DataGridViewRow r in dgvPhieuDat.Rows)
                {
                    if (r.IsNewRow)
                        continue;
                    ChiTietPhieuDat ctpd = new ChiTietPhieuDat();
                    ctpd.FK_SachID = Xulysach.TimSachtheoma(r.Cells[0].Value.ToString()).SachID;
                    ctpd.ChiTietPhieuDatQuantum = int.Parse(r.Cells[2].Value.ToString());
                    ctpd.ChiTietPhieuDatPrice = float.Parse(r.Cells[3].Value.ToString());
                    ctpd.ChiTietPhieuDatTotal = float.Parse(r.Cells[4].Value.ToString());
                    pd.ChiTietPhieuDats.Add(ctpd);
                }

                xulyPhieuDat.ThemPhieuDat(pd);

            }
            //Sua
            else if (action == "edit")
            {
                PhieuDat pd = new PhieuDat();
                pd.PhieuDatID = xulyPhieuDat.TimPhieudat(txtmaPhieuDat.Text).PhieuDatID;
                pd.PhieuDatNo = txtmaPhieuDat.Text;
                pd.PhieuDatDate = dtpNgayDat.Value;
                pd.PhieuDatDeliveTime = dtpNgayNhan.Value;
                pd.PhieuDatPayment = txthinhthucthanhtoan.Text;
                pd.PhieuDatStatus = "live";
                pd.PhieuDatHandle = "no";
                pd.FK_NhaCungCapID = int.Parse(cbbchonnhacungcap.SelectedValue.ToString());
                foreach (DataGridViewRow r in dgvPhieuDat.Rows)
                {
                    if (r.IsNewRow)
                        continue;
                    ChiTietPhieuDat ctpd = new ChiTietPhieuDat();
                    ctpd.FK_SachID = Xulysach.TimSachtheoma(r.Cells[0].Value.ToString()).SachID;
                    ctpd.ChiTietPhieuDatQuantum = int.Parse(r.Cells[2].Value.ToString());
                    ctpd.ChiTietPhieuDatPrice = float.Parse(r.Cells[3].Value.ToString());
                    ctpd.ChiTietPhieuDatTotal = float.Parse(r.Cells[4].Value.ToString());
                    pd.ChiTietPhieuDats.Add(ctpd);
                }

                xulyPhieuDat.SuaPhieuDat(pd);
            }
            //Xoa
            else if (action == "delete")
            {
                xulyPhieuDat.XoaPhieuDat(txtmaPhieuDat.Text);
                txtmaPhieuDat.Text = "";
                txthinhthucthanhtoan.Text = "";
                dgvPhieuDat.Rows.Clear();
                var kq = xulyPhieuDat.getDsPhieuDat().Where(x => x.FK_NhaCungCapID == (int)cbbtimphieudattheonhacc.SelectedValue && x.PhieuDatStatus == "live");
                if (kq != null)
                {
                    hienthidanhsachPhieuDat(kq.ToList<PhieuDat>());
                }
            }

            #endregion
        }

        private void btnEditPhieuDat_Click(object sender, EventArgs e)
        {
            #region xử lý giao diện

            btnThemPhieuDat.Enabled = false;
            btnEditPhieuDat.Enabled = false;//tat nut edit
            btnXoaPhieuDat.Enabled = false;
            btnSavePhieuDat.Enabled = true;//bat nut save len
            btnHuy.Enabled = true;

            gbchonncc.Visible = true;//hien chon nha cung cap
            #endregion

            #region xử lý dữ liệu
            action = "edit";
            #endregion
        }

        private void btnXoaPhieuDat_Click(object sender, EventArgs e)
        {
            #region xử lý giao diện
            btnThemPhieuDat.Enabled = false;
            btnEditPhieuDat.Enabled = false;//tat nut edit
            btnXoaPhieuDat.Enabled = false;
            btnSavePhieuDat.Enabled = true;//bat nut save len
            btnHuy.Enabled = true;
            #endregion

            #region xử lý dữ liệu
            action = "delete";
            #endregion
        }

        private void FormPhieuDat_Load(object sender, EventArgs e)
        {
            xulyPhieuDat = new CXulyPhieuDat();
            Xulyncc = new CXulyNhacungcap();
            Xulysach = new CXulythongtinsach();

            #region do du lieu vao cbbtimnphieudattheonhacc
            cbbtimphieudattheonhacc.DataSource = Xulyncc.GetdsNhaCungCap();
            cbbtimphieudattheonhacc.DisplayMember = "NhaCungCapName";
            cbbtimphieudattheonhacc.ValueMember = "NhaCungCapID";
            #endregion

            #region đổ dữ liệu vào cbbchonnhaccungcap
            cbbchonnhacungcap.DataSource = Xulyncc.GetdsNhaCungCap();
            cbbchonnhacungcap.DisplayMember = "NhaCungCapName";
            cbbchonnhacungcap.ValueMember = "NhaCungCapID";
            #endregion

            //Load dữ liệu lên form
            hienthidanhsachPhieuDat(xulyPhieuDat.getDsPhieuDat());
        }

        private void hienthidanhsachPhieuDat(List<PhieuDat> ds)
        {
            lstPhieuDat.Items.Clear();
            foreach (PhieuDat pd in ds)
            {
                ListViewItem lvi = lstPhieuDat.Items.Add(pd.PhieuDatNo);
                lvi.SubItems.Add(pd.PhieuDatDate.ToString());
                lvi.SubItems.Add(pd.PhieuDatDeliveTime.ToString());
                lvi.SubItems.Add(pd.PhieuDatPayment);
                lvi.SubItems.Add(pd.PhieuDatHandle);
                lvi.SubItems.Add(pd.PhieuDatComplete);
            }
        }

        private void btnTimPhieuDat_Click(object sender, EventArgs e)
        {
            var kq = xulyPhieuDat.getDsPhieuDat().Where(x => x.FK_NhaCungCapID == (int)cbbtimphieudattheonhacc.SelectedValue && x.PhieuDatStatus=="live");
            if (kq != null)
            {
                hienthidanhsachPhieuDat(kq.ToList<PhieuDat>());
            }
        }

        private void lstPhieuDat_SelectedIndexChanged(object sender, EventArgs e)
        {
            foreach (ListViewItem lvi in lstPhieuDat.SelectedItems)
            {
                string mapd = lvi.SubItems[0].Text;
                PhieuDat pd = xulyPhieuDat.TimPhieudat(mapd);
                HienthiPhieuDat(pd);
            }
            tabControlPhieuDat.SelectedIndex = 1;// chuyển qua tab PhieuDat
        }

        private void HienthiPhieuDat(PhieuDat pd)
        {
            if (pd.PhieuDatHandle == "yes")
            {
                btnEditPhieuDat.Enabled = false;
                btnXoaPhieuDat.Enabled = false;
            }
            else
            {
                btnEditPhieuDat.Enabled = true;
                btnXoaPhieuDat.Enabled = true;
            }
            txtmaPhieuDat.Text = pd.PhieuDatNo;
            txthinhthucthanhtoan.Text = pd.PhieuDatPayment;
            //if(pd.PhieuDatDate.Value !=null)
            //    dtpNgayDat.Value = pd.PhieuDatDate.Value;
            //if(pd.PhieuDatDeliveTime.Value!=null)
            //    dtpNgayNhan.Value = pd.PhieuDatDeliveTime.Value;
            cbbchonnhacungcap.SelectedValue = pd.FK_NhaCungCapID;
            hienthidanhsachChitietPhieuDat(pd.ChiTietPhieuDats.ToList<ChiTietPhieuDat>());
        }

        private void hienthidanhsachChitietPhieuDat(List<ChiTietPhieuDat> dschitietpd)
        {
            dgvPhieuDat.Rows.Clear();
            foreach (ChiTietPhieuDat ctpd in dschitietpd)
            {
                int i = dgvPhieuDat.Rows.Add();
                dgvPhieuDat.Rows[i].Cells[0].Value = ctpd.Sach.SachNo;
                dgvPhieuDat.Rows[i].Cells[1].Value=ctpd.Sach.SachName;
                dgvPhieuDat.Rows[i].Cells[2].Value=ctpd.ChiTietPhieuDatQuantum;
                dgvPhieuDat.Rows[i].Cells[3].Value=ctpd.ChiTietPhieuDatPrice;
                dgvPhieuDat.Rows[i].Cells[4].Value=ctpd.ChiTietPhieuDatTotal;
            }
        }

        private void btnchonsach_Click(object sender, EventArgs e)
        {
            FormchonsachchoPhieuDat f = new FormchonsachchoPhieuDat(Xulyncc.TimNhaCungCapTheoTen(cbbchonnhacungcap.Text).First());
            f.ShowDialog();
            dsSachchon = f.DsSachchon;

            foreach (Sach s in dsSachchon)
            {
                int i = dgvPhieuDat.Rows.Add();
                dgvPhieuDat.Rows[i].Cells[0].Value=s.SachNo;
                dgvPhieuDat.Rows[i].Cells[1].Value = s.SachName;
            }
            
        }

        //Sự kiện khi rời khỏi 1 dòng trong row
        private void dgvPhieuDat_RowValidated(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex != dgvPhieuDat.RowCount - 1)
            {
                int soluong = int.Parse(dgvPhieuDat.Rows[e.RowIndex].Cells[2].Value.ToString());
                float dongia = float.Parse(dgvPhieuDat.Rows[e.RowIndex].Cells[3].Value.ToString());
                float thanhtien = soluong * dongia;
                dgvPhieuDat.Rows[e.RowIndex].Cells[4].Value = thanhtien;
            }
        }

        private void btnHuy_Click(object sender, EventArgs e)
        {
            #region Xử lý giao diện
            if (action == "add")
            {
                btnThemPhieuDat.Enabled = true;
                btnEditPhieuDat.Enabled = true;
                btnXoaPhieuDat.Enabled = false;
                btnSavePhieuDat.Enabled = false;
                btnHuy.Enabled = false;
                txtmaPhieuDat.Text = "";
                txthinhthucthanhtoan.Text = "";
                cbbchonnhacungcap.Text = "";
                dgvPhieuDat.Rows.Clear();
            }
            else
            {
                btnThemPhieuDat.Enabled = true;
                btnEditPhieuDat.Enabled = true;
                btnXoaPhieuDat.Enabled = false;
                btnSavePhieuDat.Enabled = false;
            }
            #endregion
        }
    }
}
